using System;

namespace SIP.PN.Modelo.Entidades
{
    public abstract class ProyectoTareaAbstracta
    {
        private int codigo;
        private string nombre;
        private string descripcion;
        private int orden;
        private DateTime fechaSolicitud;
        private ProyectoTareaEstado estado;

        public virtual int Codigo
        {
            get { return codigo; }
            set { codigo = value; }
        }

        public virtual string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        public virtual string Descripcion
        {
            get { return descripcion; }
            set { descripcion = value; }
        }

        public virtual int Orden
        {
            get { return orden; }
            set { orden = value; }
        }

        public virtual DateTime FechaSolicitud
        {
            get { return fechaSolicitud; }
            set { fechaSolicitud = value; }
        }

        public virtual ProyectoTareaEstado Estado
        {
            get { return estado; }
            set { estado = value; }
        }

        #region Metodos Sobreescritos

        public override bool Equals(object obj)
        {
            ProyectoTareaAbstracta otro = obj as ProyectoTareaAbstracta;
            if (otro == null) return false;
            return otro.Codigo.Equals(Codigo);
        }

        public override int GetHashCode()
        {
            return string.Format("{0}-{1}", GetType(), ToString()).GetHashCode();
        }

        public override string ToString()
        {
            return Codigo.ToString();
        }

        #endregion
    }
}